from typing import Set

from chernc.treediff.gumtree.tree.tree import TreeLike

class TreeClassifier:
    """
    Interface for classifying changes between source and destination ASTs.
    """

    def get_updated_srcs(self) -> Set['TreeLike']:
        """
        Return the set of updated nodes in the source AST.
        """
        raise NotImplementedError

    def get_deleted_srcs(self) -> Set['TreeLike']:
        """
        Return the set of deleted nodes in the source AST.
        """
        raise NotImplementedError

    def get_moved_srcs(self) -> Set['TreeLike']:
        """
        Return the set of moved nodes in the source AST.
        """
        raise NotImplementedError

    def get_updated_dsts(self) -> Set['TreeLike']:
        """
        Return the set of updated nodes in the destination AST.
        """
        raise NotImplementedError

    def get_inserted_dsts(self) -> Set['TreeLike']:
        """
        Return the set of inserted nodes in the destination AST.
        """
        raise NotImplementedError

    def get_moved_dsts(self) -> Set['TreeLike']:
        """
        Return the set of moved nodes in the destination AST.
        """
        raise NotImplementedError
